#pragma once

#include "State.h"
#include "Behaviour.h"
#include "ThirdPersonController.h"

namespace game_engine { namespace library
{

/*!
 * \class TPCwalking
 * \brief 
 */
class TPCwalking : public game_engine::components::State
{
///////////////////////////////////////////////////////////////////////////////
// Attribute definition
///////////////////////////////////////////////////////////////////////////////
    

///////////////////////////////////////////////////////////////////////////////
// Method definition
///////////////////////////////////////////////////////////////////////////////
public:
    // Constructors and Destructors
    TPCwalking(void);
    TPCwalking(game_engine::components::Behaviour *parent);
    virtual ~TPCwalking(void);

    // Others
    void onEnter(void) throw(...);
    void onLoop(const FLOAT32 time) throw(...);
    void onExit(void) throw(...);

private:
    const Direction computeDirection(void) const;
    void setDirectionSequence(const Direction direction) throw(...);
    void setNewPosition(const Direction direction, const FLOAT32 time) throw(...);

};

}}
